UniCommon機能紹介 - Log
Logはロギングに関するクラスがまとまっています
publicなのはLoggersのみで、これらに各種ロガーのファクトリがまとまっています
Loggers.New
UnityのILoggerを実装したタグつきロガーを作成します
僕はよくある感じの日付+タグ+ログレベル形式で使っていました
code:cs
var logger = Loggers.New("MyClass");
logger.Log("MyMeshod", "way");
書式は、日付, ミリ秒, フレーム, ログレベル, タグ, テキストになっています
LogFormatは後述のLogFormatterで変えることが出来ます
これは、LogFormatters.Defaultを利用した例です
Loggers.NewFileLogger
後述のFiles, Asyncsを使ったファイルロガーを作成します
指定インターバルで自動的に非同期でログファイルに書き込まれます
code:cs
var logpath = Application.dataPath + "/logs/my.log";
// 30秒ごとにflush
var fileLogger = Loggers.NewFileLogger("tag", logpath, TimeSpan.FromSeconds(30));
fileLogger.Log("MyMethod", "way");
FileLoggerはStreamLogHandlerをlogHandlerに設定したTaggedLoggerです
現在はFileStream版しかありませんが、実装によってはTCPやWebSocketのストリームへのログを実装できます
カスタムログフォーマッター
LoggersのファクトリメソッドにILogFormatterを渡すことでカスタムログフォーマットのロガーを作成できます
code:cs
public interface ILogFormatter {
string Format(LogType logType, object log);
string FormatException(Exception exception);
}
このように実装します
code:cs
public sealed class MyLogFormatter : ILogFormatter {
public string Format(LogType logType, object log) {
return string.Format("(^_^){ {0} }", log);
}
public string FormatException(Exception exception) {
return Format(LogType.Exception, exception);
}
}
ログはこうなります
code:cs
var myLogger = Loggers.New("MyLogger", new MyLogFormatter());